home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / vdistand.i < prev    next >
Text File  |  1997-10-26  |  13KB  |  381 lines

  1. IMPLEMENTATION MODULE VDIStandards;
  2.  
  3. FROM SYSTEM          IMPORT ADDRESS, ADR, WORD, LOC;
  4. FROM Void            IMPORT v;
  5. FROM GrafBase        IMPORT Rectangle;
  6. IMPORT MTE;
  7. IMPORT FontSelect;
  8. IMPORT WdwManager;
  9. IMPORT CatEdit;
  10. IMPORT grin;
  11. IMPORT Clip;
  12. IMPORT CatGlobal;
  13. IMPORT msgList;
  14. IMPORT treeList;
  15. IMPORT MsgWindow;
  16. FROM SwapServer         IMPORT SplitWordToByte;
  17.  
  18. IMPORT MagicAES;
  19. IMPORT MagicVDI;
  20. IMPORT MagicFSM;
  21. IMPORT MausTauschrsc;
  22. IMPORT MagicSys;
  23. IMPORT mtDials;
  24. IMPORT mtUtils;
  25. IMPORT mtAlerts;
  26. IMPORT mtAppl;
  27. IMPORT mtXobjects;
  28. IMPORT MagicConvert;
  29.  
  30. IMPORT WinDials;
  31.  
  32. CONST minWindWidth  = 128;
  33.       minWindHeight = 128-16;
  34.  
  35. VAR menu     : ADDRESS;
  36.     (* menuLength: INTEGER; *)
  37.  
  38.  
  39.         (* VDI Text Funktionen    *)
  40.         
  41. PROCEDURE Text (isFSM : BOOLEAN; hdl, x, y: INTEGER; REF string: ARRAY OF CHAR);
  42.           (* v_gtext *)
  43. BEGIN
  44.   IF string[0] = 0C THEN RETURN END;
  45.  
  46.   IF isFSM
  47.   THEN
  48.     MagicFSM.FSMText (hdl, x, y, string);
  49.   ELSE
  50.     MagicVDI.Text (hdl, x, y, string);
  51.   END;
  52. END Text;
  53.  
  54. PROCEDURE InqTextextend (isFSM : BOOLEAN; hdl : INTEGER; REF string: ARRAY OF CHAR;
  55.                          VAR extent: ARRAY OF LOC);
  56.           (* vqt_extent *)
  57.   VAR (*$Reg*) i : CARDINAL;
  58. BEGIN
  59.   IF string[0] = 0C THEN 
  60.     FOR i := 0 TO HIGH (extent)-1 DO extent[i] := 0; END;
  61.     RETURN
  62.   END;
  63.   IF isFSM
  64.   THEN
  65.     MagicFSM.InqFExtent (hdl, string, extent);
  66.   ELSE 
  67.     MagicVDI.InqTextextent (hdl, string, extent);
  68.   END;
  69. END InqTextextend;
  70.  
  71. PROCEDURE InitVDIStandards():BOOLEAN;
  72. BEGIN
  73.   menu        := MausTauschrsc.TreeAddr^[MausTauschrsc.menu];
  74.   RETURN TRUE;
  75. END InitVDIStandards;
  76.  
  77. (* Neue Fontauswahl: Ruft die Dialogbox auf und danach die entsprechende
  78.  * Setzroutine fr das entsprechende Fenster.
  79.  *)
  80. PROCEDURE SelectFont (handle, wdw : INTEGER; onlyMono : BOOLEAN;
  81.                       VAR font, size : INTEGER; setFont : iProc);
  82. BEGIN
  83.   IF FontSelect.DoSelectFont (handle, onlyMono, font, size)
  84.   THEN
  85.     setFont (wdw, font, size);
  86.   END;
  87. END SelectFont;
  88.  
  89. PROCEDURE GetSpec( tree : ADDRESS; Item : INTEGER):ADDRESS;
  90. BEGIN
  91.   RETURN mtXobjects.GetObSpec (tree, Item)
  92. END GetSpec;
  93.  
  94. PROCEDURE GetState(tree : ADDRESS; Item : INTEGER):BITSET;
  95. VAR objPtr : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  96. BEGIN
  97.   objPtr := tree;
  98.   RETURN objPtr^[Item].obState
  99. END GetState;
  100.  
  101. PROCEDURE GetFlags(tree : ADDRESS; Item : INTEGER):BITSET;
  102. VAR objPtr : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  103. BEGIN
  104.   objPtr := tree;
  105.   RETURN objPtr^[Item].obFlags
  106. END GetFlags;
  107.  
  108. PROCEDURE SetSpec( tree : ADDRESS; Item : INTEGER; newSpec :ADDRESS);
  109. VAR objPtr : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  110. BEGIN
  111.   objPtr := tree;
  112.   objPtr^[Item].obSpec.StringPtr := newSpec
  113. END SetSpec;
  114.  
  115. PROCEDURE SetState(tree : ADDRESS; Item : INTEGER; newState : BITSET);
  116. VAR objPtr : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  117. BEGIN
  118.   objPtr := tree;
  119.   newState := newState - {MagicSys.Bit15, MagicSys.Bit14,
  120.                           MagicSys.Bit13, MagicSys.Bit12,
  121.                           MagicSys.Bit11, MagicSys.Bit10,
  122.                           MagicSys.Bit9,  MagicSys.Bit8};
  123.   objPtr^[Item].obState := objPtr^[Item].obState -
  124.                          {MagicSys.Bit7, MagicSys.Bit6,
  125.                           MagicSys.Bit5, MagicSys.Bit4,
  126.                           MagicSys.Bit3, MagicSys.Bit2,
  127.                           MagicSys.Bit1, MagicSys.Bit0};
  128.   objPtr^[Item].obState := objPtr^[Item].obState + newState
  129. END SetState;
  130.  
  131. PROCEDURE SetFlags(tree : ADDRESS; Item : INTEGER; newFlags : BITSET);
  132. VAR objPtr : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  133. BEGIN
  134.   objPtr := tree;
  135.   newFlags := newFlags - {MagicSys.Bit15, MagicSys.Bit14,
  136.                           MagicSys.Bit13, MagicSys.Bit12,
  137.                           MagicSys.Bit11, MagicSys.Bit10,
  138.                           MagicSys.Bit9};
  139.   objPtr^[Item].obFlags := objPtr^[Item].obFlags -
  140.                          {MagicSys.Bit8,
  141.                           MagicSys.Bit7, MagicSys.Bit6,
  142.                           MagicSys.Bit5, MagicSys.Bit4,
  143.                           MagicSys.Bit3, MagicSys.Bit2,
  144.                           MagicSys.Bit1, MagicSys.Bit0};
  145.   objPtr^[Item].obFlags := objPtr^[Item].obFlags + newFlags
  146. END SetFlags;
  147.  
  148. (*---------------------------------------------------------*)
  149.  
  150. PROCEDURE newState(b : BOOLEAN):INTEGER;
  151. BEGIN
  152.   IF b THEN RETURN 1 ELSE RETURN 0 END;
  153. END newState;
  154.  
  155. TYPE mSet = SET OF [0..255];
  156.  
  157. VAR menuSet : mSet;
  158.  
  159.   PROCEDURE EnableItem (tree : ADDRESS; item : INTEGER; enable : BOOLEAN);
  160.   BEGIN
  161.     IF enable
  162.     THEN
  163.       IF ~(item IN menuSet) THEN 
  164.         MagicAES.MenuIenable (menu, item, 1); 
  165.         INCL(menuSet, item);
  166.       END;
  167.     ELSE
  168.       IF item IN menuSet THEN 
  169.         MagicAES.MenuIenable (menu, item, 0); 
  170.         EXCL(menuSet, item);
  171.       END;
  172.     END;
  173.   END EnableItem;
  174.  
  175.   PROCEDURE CheckItem (tree : ADDRESS; item : INTEGER; enable : BOOLEAN);
  176.   BEGIN
  177.     IF enable
  178.     THEN
  179.       MagicAES.MenuIcheck (menu, item, 1);
  180.     ELSE
  181.       MagicAES.MenuIcheck (menu, item, 0);
  182.     END;
  183.   END CheckItem;
  184.  
  185. PROCEDURE StatusEnable(yep : BOOLEAN);
  186. VAR dr : Rectangle; show : BOOLEAN; i : INTEGER;
  187. BEGIN
  188.   (*
  189.   IF yep THEN
  190.     show :=  mtUtils.InState (menu, MausTauschrsc.gelesen, MagicAES.DISABLED);
  191.     IF show THEN 
  192.       FOR i := MausTauschrsc.gelesen TO MausTauschrsc.user2 DO
  193.         EnableItem (menu, i, TRUE) 
  194.       END;
  195.     END;
  196.   ELSE
  197.     show := ~mtUtils.InState (menu, MausTauschrsc.gelesen, MagicAES.DISABLED);
  198.     IF show THEN 
  199.       FOR i := MausTauschrsc.gelesen TO MausTauschrsc.user2 DO
  200.         EnableItem (menu, i, FALSE) 
  201.       END;
  202.     END;
  203.   END;
  204.   EnableItem (menu, MausTauschrsc.upsearch, yep);
  205.   *)
  206.   EnableItem (menu, MausTauschrsc.tmsagain, yep);
  207. END StatusEnable;
  208.  
  209. PROCEDURE StatusCheck(b : BITSET);
  210. BEGIN
  211. (*
  212.   CheckItem (menu, MausTauschrsc.gelesen, 0 IN b);
  213.   CheckItem (menu, MausTauschrsc.gefunden, 1 IN b);
  214.   CheckItem (menu, MausTauschrsc.interess, 2 IN b);
  215.   CheckItem (menu, MausTauschrsc.teilloes, 3 IN b);
  216.   CheckItem (menu, MausTauschrsc.totalloe, 4 IN b);
  217.   CheckItem (menu, MausTauschrsc.kommenti, 5 IN b);
  218.   CheckItem (menu, MausTauschrsc.beantwor, 6 IN b);
  219.   CheckItem (menu, MausTauschrsc.user10, 7 IN b);
  220.   CheckItem (menu, MausTauschrsc.user2, 8 IN b);
  221.   *)
  222. END StatusCheck;
  223.  
  224. VAR clipDa : BOOLEAN;
  225.  
  226. PROCEDURE enableMenuItems(wdw : INTEGER);
  227.  
  228.   VAR 
  229.       bl,
  230.       isTop, isMsg, isEdit,
  231.       isWriteEdit, isList,
  232.       qBlock,
  233.       infoLine,
  234.       moreWinds,
  235.       isInQueue,
  236.       isSel,
  237.       isIcon,
  238.       isTree,
  239.       isButton,
  240.       topNext  : BOOLEAN;
  241.       botWdw:    INTEGER;
  242.       mStr:     ARRAY [0..39] OF CHAR;
  243.   
  244.   
  245.   PROCEDURE SetStr (VAR str : ARRAY OF CHAR; REF s2: ARRAY OF CHAR);
  246.     VAR i, init, max: INTEGER;
  247.   BEGIN
  248.     init := 0;
  249.     WHILE str[init]=' ' DO INC (init); END;
  250.     max := mtUtils.Min (LENGTH(str), CARDINAL(init)+LENGTH(s2));
  251.     FOR i := init TO max - 1 DO
  252.       str[i] := s2[i-init];
  253.     END;
  254.   END SetStr;
  255.   
  256. BEGIN
  257.   clipDa := Clip.SomethingInScrap();
  258.   isMsg := grin.grinWindowTop (wdw);
  259.   isList := msgList.listWindowTop (wdw);
  260.   isTree := treeList.treeWindowTop (wdw);
  261.   isEdit := ~isMsg & CatEdit.IsEditTop (wdw);
  262.   isWriteEdit := isEdit & ~CatEdit.GetMode (wdw, CatEdit.roMode);
  263.   isTop := isMsg OR isEdit;
  264.   IF isTop 
  265.   THEN
  266.     bl := CatEdit.BlockIsMarked (wdw);
  267.   ELSIF isList
  268.   THEN
  269.     bl := msgList.listSomethingSelected (wdw);
  270.   ELSE
  271.     bl := FALSE;
  272.   END;
  273.   isSel := MsgWindow.msgWindowTop (wdw);
  274.   isInQueue := WdwManager.IsInQueue (wdw);
  275.   moreWinds := WdwManager.GetSecondWdw(botWdw); 
  276.   isIcon := WdwManager.WindowIsIcon (wdw);
  277.   topNext := WdwManager.TopNextPossible();
  278.   IF moreWinds THEN
  279.     v.bool := WdwManager.GetSecondWdw (botWdw);
  280.     infoLine := ~isIcon & isWriteEdit & (grin.grinWindowTop (botWdw) OR grin.grinOnlyOneWind (botWdw));
  281.     qBlock := ~isIcon & infoLine & CatEdit.BlockIsMarked (botWdw);
  282.   ELSE
  283.     qBlock := FALSE;
  284.     infoLine := FALSE;
  285.   END;
  286.  
  287.   EnableItem (menu, MausTauschrsc.tmerge  , ~isIcon & isWriteEdit);   (* STRING in Baum MENU *)
  288.   EnableItem (menu, MausTauschrsc.tclose  , WdwManager.WindowIsCloseable (wdw));    (* STRING in Baum MENU *)
  289.   EnableItem (menu, MausTauschrsc.tsave   , ~isIcon & isEdit);   (* STRING in Baum MENU *)
  290.   EnableItem (menu, MausTauschrsc.saveas  , ~isIcon & (isTop OR (isList & bl)));    (* STRING in Baum MENU *)
  291.   EnableItem (menu, MausTauschrsc.tprint  , ~isIcon & isTop);    (* STRING in Baum MENU *)
  292.   
  293.   EnableItem (menu, MausTauschrsc.tundo   , ~isIcon & isTop);              (* STRING in Baum MENU *)
  294.   EnableItem (menu, MausTauschrsc.tselall , ~isIcon & (isTop OR isList OR isSel OR isTree));    (* STRING in Baum MENU *)
  295.   EnableItem (menu, MausTauschrsc.tcut    , ~isIcon & bl & isWriteEdit);        (* STRING in Baum MENU *)
  296.   EnableItem (menu, MausTauschrsc.tcopy   , ~isIcon & (isTop OR (isList & bl)));        (* STRING in Baum MENU *)
  297.   EnableItem (menu, MausTauschrsc.tpaste  , ~isIcon & clipDa & isWriteEdit);    (* STRING in Baum MENU *)
  298.   EnableItem (menu, MausTauschrsc.blkprot,  ~isIcon & isWriteEdit & bl);         (* STRING in Baum MENU *)
  299.   EnableItem (menu, MausTauschrsc.blockrot, ~isIcon & isTop & bl);         (* STRING in Baum MENU *)
  300.  
  301.   EnableItem (menu, MausTauschrsc.infoline, infoLine);           (* STRING in Baum MENU *)
  302.   EnableItem (menu, MausTauschrsc.writeblo, qBlock);             (* STRING in Baum MENU *)
  303.   EnableItem (menu, MausTauschrsc.tchflag , ~isIcon & (isMsg OR isList OR isTree));
  304.   EnableItem (menu, MausTauschrsc.tsuchnb , ~isIcon & isMsg);
  305.  
  306.   EnableItem (menu, MausTauschrsc.tmsagain, ~isIcon & isMsg);    (* STRING in Baum MENU *)
  307.   EnableItem (menu, MausTauschrsc.tsearch , ~isIcon & (isMsg OR isList));    (* STRING in Baum MENU *)
  308.  
  309.   EnableItem (menu, MausTauschrsc.findrepl, ~isIcon & isTop);   (* STRING in Baum MENU *)
  310.   EnableItem (menu, MausTauschrsc.ttsagain, ~isIcon & isTop);   (* STRING in Baum MENU *)
  311.   EnableItem (menu, MausTauschrsc.brepl   , ~isIcon & isEdit);   (* STRING in Baum MENU *)
  312.  
  313.   EnableItem (menu, MausTauschrsc.cyclewin, topNext  );(* STRING in Baum MENU *)
  314.   EnableItem (menu, MausTauschrsc.wstacked, moreWinds);(* STRING in Baum MENU *)
  315.   EnableItem (menu, MausTauschrsc.wneben  , moreWinds);(* STRING in Baum MENU *)
  316.   EnableItem (menu, MausTauschrsc.wstaffel, moreWinds);(* STRING in Baum MENU *)
  317.   EnableItem (menu, MausTauschrsc.wtiled  , moreWinds);(* STRING in Baum MENU *)
  318.   EnableItem (menu, MausTauschrsc.fullwin , WdwManager.WindowIsFullable (wdw));          (* STRING in Baum MENU *)
  319.   EnableItem (menu, MausTauschrsc.efont   , ~isIcon & (isList OR isTop OR isSel OR isTree));    (* STRING in Baum MENU *)
  320.   EnableItem (menu, MausTauschrsc.ocolor  , ~isIcon & (isList OR isTop OR isSel OR isTree));    (* STRING in Baum MENU *)
  321.   EnableItem (menu, MausTauschrsc.oeditor , ~isIcon & isTop);                       (* STRING in Baum MENU *)
  322.   
  323.   (* Jetzt String noch anpassen fr Oeditor *)
  324.   IF isTop
  325.   THEN
  326.     mtUtils.ObjcString (menu, MausTauschrsc.oeditor, mStr);
  327.     IF isEdit
  328.     THEN
  329.       SetStr (mStr, 'Editor...  ');
  330.     ELSIF isMsg
  331.     THEN
  332.       SetStr (mStr, 'Anzeige... ');
  333.     END;
  334.     MagicAES.MenuText (menu, MausTauschrsc.oeditor, mStr);
  335.   END;
  336.  
  337. END enableMenuItems;
  338.  
  339. PROCEDURE enableNewTop (wdw : INTEGER);
  340.   VAR isInQueue,
  341.       isEdit : BOOLEAN;
  342.       clipPath : ARRAY [0..255] OF CHAR;
  343. BEGIN
  344.   clipDa := Clip.GetScrap (clipPath) & Clip.ScrapDirty (clipPath);
  345.   isInQueue := WdwManager.IsInQueue (wdw);
  346.   isEdit := ~grin.grinWindowTop (wdw) & CatEdit.IsEditTop (wdw) 
  347.           & ~CatEdit.GetMode (wdw, CatEdit.roMode);
  348.   EnableItem (menu, MausTauschrsc.tpaste, clipDa & isEdit);             (* STRING in Baum MENU *)
  349.   StatusEnable (grin.grinWindowTop (wdw));
  350. END enableNewTop;
  351.  
  352. PROCEDURE enableOrDisableMenu (disable : BOOLEAN);
  353.   VAR mtree: mtUtils.tObjcTree;
  354. BEGIN
  355.   WdwManager.DisableMenu (menu, disable);
  356.   (*
  357.   v.int := MagicAES.MenuBar(menu, MagicAES.Reset);
  358.   mtUtils.SetState (menu, MausTauschrsc.tdatei  , MagicAES.DISABLED, disable);
  359.   mtUtils.SetState (menu, MausTauschrsc.tbearbei, MagicAES.DISABLED, disable);
  360.   mtUtils.SetState (menu, MausTauschrsc.tmessage, MagicAES.DISABLED, disable);
  361.   mtUtils.SetState (menu, MausTauschrsc.twindow , MagicAES.DISABLED, disable);
  362.   mtUtils.SetState (menu, MausTauschrsc.ttausch , MagicAES.DISABLED, disable);
  363.   mtUtils.SetState (menu, MausTauschrsc.tsuchen , MagicAES.DISABLED, disable);
  364.   EnableItem (menu, MausTauschrsc.tabout, ~disable); 
  365.   IF disable
  366.   THEN
  367.     mtree := menu;
  368.     menuLength := mtree^[2].obWidth;
  369.     mtree^[2].obWidth:= mtree^[3].obWidth; (* Breite auf DESK begrenzen *)
  370.   ELSE
  371.     mtree := menu;
  372.     mtree^[2].obWidth:= menuLength; (* Breite zurcksetzen *)
  373.   END;
  374.   v.int := MagicAES.MenuBar(menu, MagicAES.Set);
  375.   *)
  376. END enableOrDisableMenu;
  377.  
  378. BEGIN
  379.   menuSet     := mSet{0..255};
  380. END VDIStandards.
  381.